- 原文:BLS12-381 For The Rest Of Us
- 作者:Ben Edgington
- 译者:Kurt Pan
开始鼓捣之前,我希望我知道的。
近年来,椭圆曲线BLS12-381已成逐渐火了起来。许多协议都将其应用到了数字签名和零知识证明中:Zcash、Ethereum 2.0、Skale、Algorand、Dfinity、Chia 等等。
不幸的是,现有的关于 BLS12-381 的材料里充满着晦涩的咒语,比如“实例化其六角扭”和“最优扩展域塔”。我就是来解决这个问题的
1
两个名词的正确翻译和含义
我不会对椭圆曲线及其令人兴奋的群的性质进行一般性介绍。这方面已经有一些很棒的入门书了,我将假设读者具有这些基础知识。当然,这里有很多内容并非只特定于 BLS12-381,而是也适用于其他曲线。
动机
BLS12-381 是一个配对友好的椭圆曲线。
基于配对的密码学在过去几十年得到了很大发展,使很多有用的新应用成为了可能,例如可高效聚合的短数字签名、基于身份的密码学、单轮多方密钥交换和高效的多项式承诺方案(如KZG承诺。
配对友好的椭圆曲线是具有良好的嵌入度(将在下面解释!)和大素数阶子群(也见下文)的曲线。这些曲线很少见。如果你随机创建一条椭圆曲线,它是配对友好的可能性非常之小。然而,它们是可以构造出来的, BLS 曲线就被显式构造为配对友好的。还有其他几个配对友好曲线系列。
如果你想了解有关基于配对的密码学的更多信息,请阅读下面这些不错的材料: (点击展开。)
一个简短的(但技术性的)解释,以及另一个。
Vitalik 对椭圆曲线配对进行了很好的一般性介绍。
这份NIST 报告可读性很强。我推荐第 2 节和附录。
同样好的背景材料是配对友好曲线的IETF 标准草案。
如果你想真的理解这些东西,那么Pairings for Beginners就很棒。如果你仔细研究,学习里面的例子,事实证明它并没有看起来那么可怕。我真的很推荐这个(但我也一直都在学习中……)。
关于曲线BLS12-381
历史
命名
曲线方程和参数
域扩展
两条曲线
子群
扭
配对
嵌入度
安全级别
协因子
单位根
使用曲线BLS12-381
BLS数字签名
公私钥
签名
验证
聚合
恶意密钥攻击
交换G1和G2
点压缩
子群成员检验
生成元
最终指数
哈希到曲线
哈希并检验
Simplified SWU map
协因子清除
扩展塔
坐标系
仿射坐标
标准射影坐标
Jacobian 坐标
进一步阅读资源
上面链接了很多参考资料,这里就不重复了。 我只会挑出一些特别有用或有趣的东西。
有用的参考资料:
原始 BLS12-381 公告 参数和序列化的简明描述 IETF 标准草案 上面的 tl;dr 版本,BLS for Busy People 一般来说,配对库的实现往往是高度优化的和/或非常通用的(支持许多曲线),这使得它们很难学习。 Paul Miller 的 JavaScript/TypeScript 中的 Noble BLS12-381 库绝对是比较容易理解的。
最后,一些有趣和有趣的读物:
这份关于 Curve9769 的全新白皮书与 BLS12-381 没有直接关系,但它是对设计和实现椭圆曲线(在这种情况下不是配对友好的)的乐趣和痛苦的写得很好的精彩探索。 配对并没有死,只是在休息。 一个很好的概述介绍。 一些 BLS12-381 的东西。
就这样吧,朋友们拜拜!
-
我多年前学习过数学,但一直在努力回避任何与纯数学有关的事情,包括群论。 我现在很后悔。 无论如何,这不会太技术性,但我也不是专家,所以可能会出错,而且一般来说会有点手忙脚乱。 如果不是很明显的话我再澄清一下,我不是密码学家。 ↩